package com.cmc.cloud.cmclink.doc.convert;

import com.cmc.cloud.cmclink.doc.api.document.req.so.CntrAndOogBaseVO;
import com.cmc.cloud.cmclink.doc.entity.PortTerminalMaxArgDO;
import com.cmc.cloud.cmclink.doc.entity.SpecialCargoOogDO;
import com.cmc.cloud.cmclink.doc.vo.specialcargooogvo.*;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 特种货审批oog Convert
 *
 * @author 集运管理员
 */
@Mapper
public interface SpecialCargoOogConvert {

    SpecialCargoOogConvert INSTANCE = Mappers.getMapper(SpecialCargoOogConvert.class);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SpecialCargoOogDO
     */
    SpecialCargoOogDO convert(SpecialCargoOogCreateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SpecialCargoOogDO
     */
    SpecialCargoOogDO convert(SpecialCargoOogBaseVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SpecialCargoOogDO
     */
    SpecialCargoOogDO convertApi(com.cmc.cloud.cmclink.doc.api.document.req.so.SpecialCargoOogBaseVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SpecialCargoOogDO
     */
    SpecialCargoOogDO convert(SpecialCargoOogUpdateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SpecialCargoOogRespVO
     */
    SpecialCargoOogRespVO convert(SpecialCargoOogDO bean);

    /**
     * 属性转换 convert
     *
     * @param list list
     * @return List<SpecialCargoOogRespVO>
     */
    List<SpecialCargoOogRespVO> convertList(List<SpecialCargoOogDO> list);

    /**
     * 属性转换 convert
     *
     * @param list list
     * @return CntrAndOogBaseVO
     */
    List<com.cmc.cloud.cmclink.doc.vo.special.externalapivo.CntrAndOogBaseVO> convertApiList(List<CntrAndOogBaseVO> list);

    /**
     * 属性转换
     *
     * @param specialCargoOogDo Do
     * @return SpecialCargoOogBaseVO
     */
    com.cmc.cloud.cmclink.doc.api.document.req.so.SpecialCargoOogBaseVO convertSpecialCargoOogBaseVo(SpecialCargoOogDO specialCargoOogDo);

    /**
     * 属性转换
     * @param vo vo
     * @return PortTerminalMaxArgDO
     */
    PortTerminalMaxArgDO convert(PortTerminalMaxArgBaseVO vo);

    /**
     * 属性转换
     * @param portDo portDo
     * @return PortTerminalMaxArgBaseVO
     */
    PortTerminalMaxArgBaseVO convert(PortTerminalMaxArgDO portDo);


}
